home *** CD-ROM | disk | FTP | other *** search
/ Floppyshop 2 / Floppyshop - 2.zip / Floppyshop - 2.iso / art&graf.ix / art-3139 / spec512.s / showspc.s next >
Text File  |  1992-02-11  |  6KB  |  377 lines

  1. ;
  2. ; Spectrum 512 Picture Displayer Routine
  3. ; --------------------------------------
  4. ;
  5. ; Coded by: MDK in 1988
  6. ;
  7. ; Updated by:  MUG U.K in 1991
  8.  
  9.  
  10. adscreen equ $F8000        ; $78000 on 512K machines
  11.  
  12.     clr.l    -(sp)
  13.     move.w    #32,-(sp)
  14.     trap    #1
  15.     addq.l    #6,sp
  16.     move.l    d0,oldsp
  17.  
  18.     move.w    #4,-(sp)
  19.     trap    #14
  20.     move.w    d0,oldrez
  21.  
  22.     clr.w    -(sp)
  23.     move.l    #-1,-(sp)
  24.     move.l    #-1,-(sp)
  25.     move.w    #5,-(sp)
  26.     trap    #14
  27.     lea    12(sp),sp
  28.     
  29.     bsr.s    store
  30.     bsr    showspc
  31.     bsr.s    restore
  32.  
  33.     move.w    oldrez,-(sp)
  34.     move.l    #-1,-(sp)
  35.     move.l    #-1,-(sp)
  36.     move.w    #5,-(sp)
  37.     trap    #14
  38.     lea    12(sp),sp
  39.  
  40.     move.l    oldsp,-(sp)
  41.     move.w    #32,-(sp)
  42.     trap    #1
  43.     addq.l    #6,sp
  44.  
  45.     move.w    #$4c,-(sp)
  46.     trap    #1
  47.  
  48. store    movem.l    $ffff8240.w,d0-d7
  49.     movem.l    d0-d7,oldpal
  50.     rts
  51.  
  52. restore    movem.l    oldpal,d0-d7
  53.     movem.l    d0-d7,$ffff8240.w
  54.     rts
  55.  
  56. oldsp    ds.l    1
  57. oldrez    ds.w    1
  58. oldpal    ds.w    16
  59. black    ds.w    16
  60.  
  61. ;
  62. ; Spectrum 512 Show routine by MDK
  63. ;
  64. showspc    bsr.s    dpak_spc   * decompactage
  65.     bsr    vbl_init
  66.  
  67.     move.w    #7,-(sp)
  68.     trap    #1
  69.     addq.l    #2,sp
  70.  
  71.     BSR     vbl_off   * vbl del
  72.     RTS
  73.         
  74. L18E62    ORI.B    #0,D0
  75.  
  76. *-------------------------------------------------------------*
  77. *             Decompactage de l'image spectrum                *
  78. *-------------------------------------------------------------*
  79.  
  80. dpak_spc    movem.l    black,d0-d7    ; palette to black
  81.     movem.l    d0-d7,$ffff8240.w    ; before displaying picture
  82.  
  83.     MOVEM.L    D0-D7/A0-A5,-(A7)
  84.            lea     image+12,a0
  85.            lea     adscreen,a1
  86.     MOVE.W    #1,D1
  87.     MOVE.W    #7,D7
  88.     LEA    32000(A1),A2
  89.     LEA    8(A2),A3
  90. L18E86    LEA    -$7C60(A2),A1
  91. L18E8A    MOVE.B    (A0)+,D6
  92.     EXT.W    D6
  93.     BMI.S    L18E9C
  94. L18E90    MOVE.B    (A0)+,(A1)
  95.     ADDA.W    D1,A1
  96.     EXG    D1,D7
  97.     DBF    D6,L18E90
  98.     BRA.S    L18EAC
  99. L18E9C    NEG.W    D6
  100.     ADDQ.W    #1,D6
  101.     MOVE.B    (A0)+,D0
  102. L18EA2    MOVE.B    D0,(A1)
  103.     ADDA.W    D1,A1
  104.     EXG    D1,D7
  105.     DBF    D6,L18EA2
  106. L18EAC    CMPA.L    A2,A1
  107.     BCS.S    L18E8A
  108.     ADDQ.L    #2,A2
  109.     CMPA.L    A3,A2
  110.     BCS.S    L18E86
  111.  
  112. *-------------------------------------------------------------*
  113. *             Decompactage  des couleurs de l'image           *
  114. *-------------------------------------------------------------*
  115.  
  116.     movea.l    image+4,a0
  117.     adda.l    #image+12,a0    
  118.     lea    buffer,A1   * ad.palette
  119.     move.w    #$254,D7
  120.     clr.w    D0
  121. L18EC4    MOVE.W    #$D,D6
  122.     MOVE.W    (A0)+,D1
  123.     LSR.W    #1,D1
  124.     MOVE.W    D0,(A1)+
  125. L18ECE    LSR.W    #1,D1
  126.     BCC.S    L18EDA
  127.     MOVE.W    (A0)+,(A1)+
  128.     DBF    D6,L18ECE
  129.     BRA.S    L18EE0
  130. L18EDA    MOVE.W    D0,(A1)+
  131.     DBF    D6,L18ECE
  132. L18EE0    MOVE.W    D0,(A1)+
  133.     DBF    D7,L18EC4
  134.     MOVEM.L    (A7)+,D0-D7/A0-A5
  135.     RTS
  136.  
  137. ;
  138. ; New VBL routine
  139. ;    
  140.  
  141. vbl_init    MOVEM.L    D0-D7/A0-A5,-(A7)
  142.     LEA    L190F0(PC),A5
  143.     MOVE.L    #buffer,(A5)
  144. ;    CLR.L    -(A7)        ; remove ';' if in GFA etc.
  145. ;    MOVE.W    #$20,-(A7)
  146. ;    TRAP    #1
  147. ;    ADDQ.L    #6,A7
  148. ;    MOVE.L    D0,-(A7)
  149.     MOVE.L    $4CE.W,4(A5)
  150.     LEA    L18F66(PC),A0
  151.     MOVE.L    A0,$4CE.W
  152. ;    MOVE.W    #$20,-(A7)
  153. ;    TRAP    #1
  154. ;    ADDQ.L    #6,A7
  155.     MOVEM.L    (A7)+,D0-D7/A0-A5
  156.     RTS
  157.  
  158. ;
  159. ; Delete VBL routine
  160. ;    
  161.  
  162. vbl_off    MOVEM.L    D0-D7/A0-A6,-(A7)
  163.     LEA    L190F0(PC),A5
  164. ;    CLR.L    -(A7)
  165. ;    MOVE.W    #$20,-(A7)
  166. ;    TRAP    #1
  167. ;    ADDQ.L    #6,A7
  168. ;    MOVE.L    D0,-(A7)
  169.     MOVE    SR,-(A7)
  170.     ORI.W    #$700,SR
  171.     MOVE.L    4(A5),$4CE.W
  172.     MOVEA.W    #$8240,A1
  173.     MOVEQ    #7,D0
  174. L18F50    CLR.L    (A1)+
  175.     DBF    D0,L18F50
  176.     MOVE.W    (A7)+,SR
  177. ;    MOVE.W    #$20,-(A7)
  178. ;    TRAP    #1
  179. ;    ADDQ.L    #6,A7
  180.     MOVEM.L    (A7)+,D0-D7/A0-A6
  181.     RTS
  182.  
  183. ;
  184. ; Actual routine to display Spectrum 512 pictures
  185. ;    
  186.  
  187. L18F66    TST.W    $43E.W
  188.     BNE    L190EE
  189.     MOVE    SR,-(A7)
  190.     ORI.W    #$700,SR
  191.     LEA    $FF8240,A4
  192.     LEA    $FF8209,A5
  193.     LEA    (A4),A0
  194.     LEA    (A4),A1
  195.     LEA    (A4),A2
  196.     LEA    L18FA2(PC),A6
  197.     MOVEA.L    L190F0(PC),A3
  198.     MOVE.W    #$C4,D7
  199.     MOVEQ    #0,D0
  200. L18F94    TST.B    (A5)
  201.     BEQ.S    L18F94
  202.     MOVE.B    (A5),D0
  203.     ADDA.L    D0,A6
  204.     ADDA.L    L18E62(PC),A6
  205.     JMP    (A6)
  206. L18FA2    NOP
  207.     NOP
  208.     NOP
  209.     NOP
  210.     NOP
  211.     NOP
  212.     NOP
  213.     NOP
  214.     NOP
  215.     NOP
  216.     NOP
  217.     NOP
  218.     NOP
  219.     NOP
  220.     NOP
  221.     NOP
  222.     NOP
  223.     NOP
  224.     NOP
  225.     NOP
  226.     NOP
  227.     NOP
  228.     NOP
  229.     NOP
  230.     NOP
  231.     NOP
  232.     NOP
  233.     NOP
  234.     NOP
  235.     NOP
  236.     NOP
  237.     NOP
  238.     NOP
  239.     NOP
  240.     NOP
  241.     NOP
  242.     NOP
  243.     NOP
  244.     NOP
  245.     NOP
  246.     NOP
  247.     NOP
  248.     NOP
  249.     NOP
  250.     NOP
  251.     NOP
  252.     NOP
  253.     NOP
  254.     NOP
  255.     NOP
  256.     NOP
  257.     NOP
  258.     NOP
  259.     NOP
  260.     NOP
  261.     NOP
  262.     NOP
  263.     NOP
  264.     NOP
  265.     NOP
  266.     NOP
  267.     NOP
  268.     NOP
  269.     NOP
  270.     NOP
  271.     NOP
  272.     NOP
  273.     NOP
  274.     NOP
  275.     NOP
  276.     NOP
  277.     NOP
  278.     NOP
  279.     NOP
  280.     NOP
  281.     NOP
  282. L1903A    NOP
  283.     LEA    (A4),A0
  284.     LEA    (A4),A1
  285.     LEA    (A4),A2
  286.     MOVE.L    (A3)+,(A0)+
  287.     MOVE.L    (A3)+,(A0)+
  288.     MOVE.L    (A3)+,(A0)+
  289.     MOVE.L    (A3)+,(A0)+
  290.     MOVE.L    (A3)+,(A0)+
  291.     MOVE.L    (A3)+,(A0)+
  292.     MOVE.L    (A3)+,(A0)+
  293.     MOVE.L    (A3)+,(A0)+
  294.     MOVE.L    (A3)+,(A1)+
  295.     MOVE.L    (A3)+,(A1)+
  296.     MOVE.L    (A3)+,(A1)+
  297.     MOVE.L    (A3)+,(A1)+
  298.     MOVE.L    (A3)+,(A1)+
  299.     MOVE.L    (A3)+,(A1)+
  300.     MOVE.L    (A3)+,(A1)+
  301.     MOVE.L    (A3)+,(A1)+
  302.     MOVE.L    (A3)+,(A2)+
  303.     MOVE.L    (A3)+,(A2)+
  304.     MOVE.L    (A3)+,(A2)+
  305.     MOVE.L    (A3)+,(A2)+
  306.     MOVE.L    (A3)+,(A2)+
  307.     MOVE.L    (A3)+,(A2)+
  308.     MOVE.L    (A3)+,(A2)+
  309.     MOVE.L    (A3)+,(A2)+
  310.     NOP
  311.     DBF    D7,L1903A
  312.     LEA    (A4),A0
  313.     LEA    (A4),A1
  314.     LEA    (A4),A2
  315.     MOVE.L    (A3)+,(A0)+
  316.     MOVE.L    (A3)+,(A0)+
  317.     MOVE.L    (A3)+,(A0)+
  318.     MOVE.L    (A3)+,(A0)+
  319.     MOVE.L    (A3)+,(A0)+
  320.     MOVE.L    (A3)+,(A0)+
  321.     MOVE.L    (A3)+,(A0)+
  322.     MOVE.L    (A3)+,(A0)+
  323.     MOVE.L    (A3)+,(A1)+
  324.     MOVE.L    (A3)+,(A1)+
  325.     MOVE.L    (A3)+,(A1)+
  326.     MOVE.L    (A3)+,(A1)+
  327.     MOVE.L    (A3)+,(A1)+
  328.     MOVE.L    (A3)+,(A1)+
  329.     MOVE.L    (A3)+,(A1)+
  330.     MOVE.L    (A3)+,(A1)+
  331.     MOVE.L    (A3)+,(A2)+
  332.     MOVE.L    (A3)+,(A2)+
  333.     MOVE.L    (A3)+,(A2)+
  334.     MOVE.L    (A3)+,(A2)+
  335.     MOVE.L    (A3)+,(A2)+
  336.     MOVE.L    (A3)+,(A2)+
  337.     MOVE.L    (A3)+,(A2)+
  338.     MOVE.L    (A3)+,(A2)+
  339.     LEA    (A4),A0
  340.     LEA    (A4),A1
  341.     LEA    (A4),A2
  342.     LEA    -$4A60(A3),A4
  343.     NOP
  344.     NOP
  345.     MOVE.L    (A3)+,(A0)+
  346.     MOVE.L    (A3)+,(A0)+
  347.     MOVE.L    (A3)+,(A0)+
  348.     MOVE.L    (A3)+,(A0)+
  349.     MOVE.L    (A3)+,(A0)+
  350.     MOVE.L    (A3)+,(A0)+
  351.     MOVE.L    (A3)+,(A0)+
  352.     MOVE.L    (A3)+,(A0)+
  353.     MOVE.L    (A3)+,(A1)+
  354.     MOVE.L    (A3)+,(A1)+
  355.     MOVE.L    (A3)+,(A1)+
  356.     MOVE.L    (A3)+,(A1)+
  357.     MOVE.L    (A3)+,(A1)+
  358.     MOVE.L    (A3)+,(A1)+
  359.     MOVE.L    (A3)+,(A1)+
  360.     MOVE.L    (A3)+,(A1)+
  361.     MOVE.L    (A3)+,(A2)+
  362.     MOVE.L    (A3)+,(A2)+
  363.     MOVE.L    (A3)+,(A2)+
  364.     MOVE.L    (A3)+,(A2)+
  365.     MOVE.L    (A3)+,(A2)+
  366.     MOVE.L    (A3)+,(A2)+
  367.     MOVE.L    (A3)+,(A2)+
  368.     MOVE.L    (A3)+,(A2)+
  369.     MOVE.W    (A7)+,SR
  370. L190EE    RTS
  371. L190F0    ds.l 2
  372.  
  373. image   incbin  a:\intro.tut\tut.spc
  374.  section bss
  375. buffer  ds.l 19200
  376.  
  377.